package jogoBolao.iu;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.JLabel;
import java.awt.Font;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;

import javax.swing.DefaultListModel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JButton;
import javax.swing.ListSelectionModel;

import jogoBolao.so.InterfaceRequerida;
import jogoBolaoeArmazenador.rn.Bolao;
import jogoBolaoeArmazenador.rn.Jogo;
import jogoBolaoeArmazenador.rn.Usuario;
import jogoBolaoeArmazenador.rn.Volante;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

@SuppressWarnings("serial")
public class TelaListaBoloes extends JFrame {

	private JPanel contentPane;
	private JFrame _telaQueChamou;
	private Bolao _bolaoASerAlterado;
	private Usuario _oUsuario;
	private JList listBoloes;
	private HashSet<Bolao> _meusBoloes;
	private JList listVolantes;
	private JLabel dezenasJogo1;
	private JLabel dezenasJogo2;
	private JLabel dezenasJogo3;

	/**
	 * Create the frame.
	 */
	public TelaListaBoloes(JFrame telaquechamou, Bolao bolaoaseralterado, Usuario usuarioquechamou) {
		
		_telaQueChamou = telaquechamou;
		_bolaoASerAlterado = bolaoaseralterado;
		_oUsuario = usuarioquechamou;
		_meusBoloes = new InterfaceRequerida().recuperaHistorico(_oUsuario);
		
		setTitle("Meus Bol\u00F5es");
		setResizable(false);
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 633, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel lblBoles = new JLabel("Bol\u00F5es:");
		lblBoles.setFont(new Font("Tahoma", Font.PLAIN, 12));
		lblBoles.setBounds(10, 11, 66, 14);
		contentPane.add(lblBoles);
		
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(20, 36, 200, 157);
		contentPane.add(scrollPane);
		
		listBoloes = new JList(_meusBoloes.toArray());
		listBoloes.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		scrollPane.setViewportView(listBoloes);
		
		listBoloes.addListSelectionListener(new ListSelectionListener() {
			
			@Override
			public void valueChanged(ListSelectionEvent arg0) {
				Bolao selecionado = (Bolao) listBoloes.getSelectedValue();
				HashSet<Volante> volantes = selecionado.get_volantes();
				DefaultListModel model = new DefaultListModel();
				Iterator<Volante> i = volantes.iterator();
				while(i.hasNext())
					model.addElement(i.next());
				listVolantes.setModel(model);
			}
		});
		
		JLabel lblVolantesDoBolo = new JLabel("Volantes do bol\u00E3o:");
		lblVolantesDoBolo.setFont(new Font("Tahoma", Font.PLAIN, 12));
		lblVolantesDoBolo.setBounds(230, 11, 124, 14);
		contentPane.add(lblVolantesDoBolo);
		
		JScrollPane scrollPane_1 = new JScrollPane();
		scrollPane_1.setBounds(240, 36, 200, 157);
		contentPane.add(scrollPane_1);
		
		listVolantes = new JList();
		listVolantes.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		scrollPane_1.setViewportView(listVolantes);
		
		listVolantes.addListSelectionListener(new ListSelectionListener() {
			
			@Override
			public void valueChanged(ListSelectionEvent arg0) {
				Volante selecionado = (Volante) listVolantes.getSelectedValue();
				if(selecionado != null){
					ArrayList<Jogo> jogos = selecionado.get_jogos();
					if(jogos.size() > 0)
						dezenasJogo1.setText(jogos.get(0).toString());
					if(jogos.size() > 1)
						dezenasJogo2.setText(jogos.get(1).toString());
					if(jogos.size() > 2)
						dezenasJogo3.setText(jogos.get(2).toString());
				}
			}
		});
		
		JLabel lblDezenasDoVolante = new JLabel("Dezenas do volante:");
		lblDezenasDoVolante.setFont(new Font("Tahoma", Font.PLAIN, 12));
		lblDezenasDoVolante.setBounds(467, 68, 122, 14);
		contentPane.add(lblDezenasDoVolante);
		
		dezenasJogo1 = new JLabel();
		dezenasJogo1.setFont(new Font("Tahoma", Font.PLAIN, 12));
		dezenasJogo1.setBounds(477, 93, 139, 14);
		contentPane.add(dezenasJogo1);
		
		dezenasJogo2 = new JLabel();
		dezenasJogo2.setFont(new Font("Tahoma", Font.PLAIN, 12));
		dezenasJogo2.setBounds(477, 130, 139, 14);
		contentPane.add(dezenasJogo2);
		
		dezenasJogo3 = new JLabel();
		dezenasJogo3.setFont(new Font("Tahoma", Font.PLAIN, 12));
		dezenasJogo3.setBounds(477, 170, 139, 14);
		contentPane.add(dezenasJogo3);
		
		JButton btnConfirmar = new JButton("Confirmar");
		btnConfirmar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				Volante volanteAdicionar = (Volante)listVolantes.getSelectedValue();
				if(volanteAdicionar != null){
					_bolaoASerAlterado.addVolante(volanteAdicionar);
					TelaNovoBolao tela = (TelaNovoBolao) _telaQueChamou;
					tela.carregaListaVolantes();
					_telaQueChamou.setEnabled(true);
					dispose();
				}else
					JOptionPane.showMessageDialog(null, "Selecione um volante!", "Erro!", JOptionPane.ERROR_MESSAGE);
			}
		});
		btnConfirmar.setBounds(171, 220, 95, 23);
		contentPane.add(btnConfirmar);
		
		JButton btnCancelar = new JButton("Cancelar");
		btnCancelar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				_telaQueChamou.setEnabled(true);
				dispose();
			}
		});
		btnCancelar.setBounds(277, 220, 95, 23);
		contentPane.add(btnCancelar);
		
		JButton btnSair = new JButton("Sair");
		btnSair.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
		});
		btnSair.setBounds(382, 220, 95, 23);
		contentPane.add(btnSair);
	}

}
